/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.documentar.model;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Santos
 */
public class AcessoColaboradorModel implements Comparable<AcessoColaboradorModel> {

    private ColaboradorModel colaborador;
    private JanelaModel janela;
    private String nomeTela;

    public String getNomeTela() {
        return nomeTela;
    }

    public void setNomeTela(String nomeTela) {
        this.nomeTela = nomeTela;
    }

    public ColaboradorModel getColaborador() {
        if (colaborador == null) {
            colaborador = new ColaboradorModel();
        }
        return colaborador;
    }

    public void setColaborador(ColaboradorModel colaborador) {
        this.colaborador = colaborador;
    }

    public JanelaModel getJanela() {
        if (janela == null) {
            janela = new JanelaModel();
        }
        return janela;
    }

    public void setJanela(JanelaModel janela) {
        this.janela = janela;
    }

    /**
     * Ação do script SQL na execução do programa
     */
    private String actionScript;
    /**
     * Modelo de um comboBox para utiliza nas telas
     */
    private DefaultComboBoxModel modelComboBox;
    /**
     * Modelo de uma table para utilizar nas telas
     */
    private DefaultTableModel modelTable;
    /**
     * Lista contendo os dados relacionados da consulta feita na tabela setor.
     * Mas é necessário rever o nome dessa variável, sugestão: lista+Classe
     */
    private List<AcessoColaboradorModel> listaJanela;
    /**
     * Variavel responsável por recepcionar dados extraidos das consultas
     * executadas na banco de dados
     */
    private ResultSet resultSet;

    public String getActionScript() {
        return actionScript;
    }

    public void setActionScript(String actionScript) {
        this.actionScript = actionScript;
    }

    public DefaultComboBoxModel getModelComboBox() {
        if (modelComboBox == null) {
            modelComboBox = new DefaultComboBoxModel();
            modelComboBox.addElement("ESCOLHER");
        }
        return modelComboBox;
    }

    public void setModelComboBox(DefaultComboBoxModel modelComboBox) {
        this.modelComboBox = modelComboBox;
    }

    public DefaultTableModel getModelTable() {
        if (modelTable == null) {
            modelTable = new DefaultTableModel();
            modelTable.addColumn("Colaborador");
            modelTable.addColumn("Janela");

        }
        return modelTable;
    }

    public void setModelTable(DefaultTableModel modelTable) {
        this.modelTable = modelTable;
    }

    public List<AcessoColaboradorModel> getListaAcessoColaborador() {
        if (listaJanela == null) {
            listaJanela = new ArrayList<>();
        }
        return listaJanela;
    }

    public void setListaAcessoColaborador(List<AcessoColaboradorModel> listaJanela) {
        this.listaJanela = listaJanela;
    }

    public ResultSet getResultSet() {
        return resultSet;
    }

    public void setResultSet(ResultSet resultSet) {
        this.resultSet = resultSet;
    }

    /**
     * Metodo responsável por encontrar o cadastro do setor em uma lista
     *
     * @param colaborador
     * @param janela
     * @return Modelo da Classe com o dado encontrado
     */
    public AcessoColaboradorModel getAcessoColaborador(int colaborador, int janela) {
        AcessoColaboradorModel model = null;
        for (AcessoColaboradorModel colaboradorJanelaModel : getListaAcessoColaborador()) {
            if (colaboradorJanelaModel.getColaborador().getCodigo() == colaborador
                    && colaboradorJanelaModel.getJanela().getCodigo() == janela) {
                model = colaboradorJanelaModel;
                break;
            }
        }
        return model;
    }

    /**
     * Metodo responsável pelo ordenação dos dados
     *
     * @param modelAcessoColaborador
     * @return
     */
    @Override
    public int compareTo(AcessoColaboradorModel modelAcessoColaborador) {
        if (this.colaborador.getCodigo() > modelAcessoColaborador.colaborador.getCodigo()) {
            return 1;
        } else if (this.colaborador.getCodigo() < modelAcessoColaborador.colaborador.getCodigo()) {
            return -1;
        }
        return this.janela.getNome().compareToIgnoreCase(modelAcessoColaborador.janela.getNome());
    }
}
